<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 二、promise里的静态方法
      // 静态成员：1.静态属性 2.静态方法
      // 静态：和 类有关 和实例化对象无关，静态成员不需要实例化直接调用；
      //   class Person {
      //     static num = 10; // 静态属性
      //     constructor() {
      //       this.height = "178cm";
      //       this.age = 20;
      //     }
      //     static myfn() {
      //       // 静态方法
      //       console.log("myfn");
      //     }
      //   }

      //   console.log(Person.num);
      //   Person.myfn();

      // 1.Promise.resolve(); 创建一个 fulfilled状态的promise对象
      //   let p = new Promise((resolve, reject) => {
      //     // resolve("success");
      //   });
      //   console.log(p);

      //   let p = Promise.resolve("success");
      //   console.log(p);

      //   class MyPromise {
      //     static resolve(val) {
      //       // 内部帮你实例化
      //       return new Promise((resolve) => {
      //         resolve(val);
      //       });
      //     }
      //   }

      //   let p = MyPromise.resolve("success");
      //   console.log(p);

      //   2.Promise.reject(); 创建一个失败状态的promise对象
      //   let p = new Promise((resolve, rejcet) => {
      //     reject("失败了");
      //   });
      //   console.log(p);
      //   let p = Promise.reject("错误了"); // 帮你把错误继续传递
      //   console.log(p);

      //   在链式操作里，需要把错误传递下去，一直进入onRejected里，最终返还错误
      //   let p1 = new Promise((resolve, reject) => {
      //     reject("错误111");
      //   });

      //   p1.then(
      //     (res) => {
      //       console.log(111, res);
      //     },
      //     (err) => {
      //       console.log("111err", err);
      //       return Promise.reject(err);
      //     }
      //   )
      //     .then(
      //       (res) => {
      //         console.log(222, res);
      //       },
      //       (err) => {
      //         console.log("222err", err);
      //         return Promise.reject(err);
      //       }
      //     )
      //     .then(
      //       (res) => {
      //         console.log(333, res);
      //       },
      //       (err) => {
      //         console.log("333err", err);
      //       }
      //     );

      // Promise.reject的实现
      class MyPromise {
        static resolve(val) {
          //内部帮你实例化；
          return new Promise((resolve) => {
            resolve(val);
          });
        }
        static reject(err) {
          return new Promise((resolve, reject) => {
            reject(err);
          });
        }
      }

      let p = MyPromise.reject("错误了");
      console.log(p);
    </script>
  </body>
</html>
